package com.hzjh.service.videolib.widget

import android.content.Context
import android.util.AttributeSet
import android.view.MotionEvent
import androidx.recyclerview.widget.RecyclerView
import com.hzjh.base.log.JHLogger
import kotlin.math.abs

class MyRecyclerView @JvmOverloads constructor(
    context: Context,
    attrs: AttributeSet? = null
) : RecyclerView(context, attrs) {
    private var mOffsetX = 0f //横纵方向上的偏移
    private  var mOffsetY = 0f //横纵方向上的偏移
    private var mLastPosX = 0f //上次落点的横纵坐标
    private  var mLastPosY = 0f //上次落点的横纵坐标
    private val mInterval = 10 //与边缘线的间距阈值

    override fun onInterceptTouchEvent(e: MotionEvent): Boolean {
        val result: Boolean
        when (e.action) {
            MotionEvent.ACTION_DOWN -> {
                mOffsetX = 0f
                mOffsetY = 0f
                mLastPosX = e.x
                mLastPosY = e.y
                result = super.onInterceptTouchEvent(e)
            }

            else -> {
                val thisPosX = e.x
                val thisPosY = e.y
                mOffsetX += abs(thisPosX - mLastPosX) //x轴偏差
                mOffsetY += abs(thisPosY - mLastPosY) //y轴偏差
                mLastPosX = thisPosX
                mLastPosY = thisPosY
                result = if (mOffsetX < mInterval && mOffsetY < mInterval) {
                    JHLogger.d("0.0", "false表示传给子控件，此时为点击事件")
                    false //false表示传给子控件，此时为点击事件
                } else if (mOffsetX < mOffsetY) {
                    JHLogger.d("0.0", "true表示不传给子控件，此时为垂直滚动")
                    true //true表示不传给子控件，此时为垂直滚动
                } else {
                    JHLogger.d("0.0", "false表示传给子控件，此时为水平滚动")
                    false //false表示传给子控件，此时为水平滚动
                }
            }
        }
        return result
    }
}